<?php

class FormazioniController extends AppController {

    var $name = 'Formazioni';

    var $scaffold;

    var $helpers = array('Javascript');

    var $formazioni = array(
    '4-4-2' => '4-4-2',
    '3-4-3' => '3-4-3',
    '4-3-3' => '4-3-3',
    '3-5-2' => '3-5-2',
    '5-3-2' => '5-3-2',
    '4-5-1' => '4-5-1');


    function lista () {
        $this->set("formazioni", $this->Formazione->find('all'));
    }

    function test_save ($formazione_id) {

        $this->Formazione->findById($formazione_id);

        $this->Formazione->set('sostituzioni', 4);

        $this->Formazione->save();

        $this->autoRender = false;


    }

    function aggiorna_schema ($formazione_id) {

        if ($this->params["form"]["value"] && $formazione_id) {

            $this->Formazione->read(null, $formazione_id);

            //ho cambiato schema, devo ripulire
            $this->Formazione->FormazioneCalciatore->deleteAll(array("formazione_id" => $formazione_id), false);

            list ($difensori, $centrocampisti, $attaccanti) = explode("-", $this->params["form"]["value"]);

            $this->Formazione->set(array(
                'difensori' => $difensori,
                'centrocampisti' => $centrocampisti,
                'attaccanti' => $attaccanti
            ));

            $this->Formazione->save();
        }

        $this->autoRender = false;
    }

    function applica_sostituzioni ($formazione_id) {

        $this->Formazione->read(null, $formazione_id);

        debug ("HO LETTO QUESTA FORMAZIONE: id Passato $formazione_id");

        debug($this->Formazione->data);

        $titolari = $this->Formazione->FormazioneCalciatore->find('all',
            array(
            'conditions' => array('FormazioneCalciatore.formazione_id' => $formazione_id, 'FormazioneCalciatore.titolare' => 1), //array of conditions
            'order' => array('FormazioneCalciatore.ordine asc'),
            'recursive' => 2));

        //  debug($titolari);

        $panchina = $this->Formazione->FormazioneCalciatore->find('all',
            array(
            'conditions' => array('FormazioneCalciatore.formazione_id' => $formazione_id, 'FormazioneCalciatore.titolare' => 0), //array of conditions
            'order' => array('FormazioneCalciatore.ordine asc'),
            'recursive' => 2));

            // debug ($panchina);

        $entrati = array();

        $this->Formazione->Sostituzione->deleteAll(array("formazione_id" => $formazione_id), false);

        //per ogni titolare
        foreach ($titolari as $titolare) {
            if (!$titolare["Calciatore"]["Prestazione"][0]["voto_calcolato"]) {

            //il titolare non ha giocato

            //scorro i panchinari, cerco uno con lo stesso ruolo e voto_calcolato > 0
                foreach ($panchina as $panchinaro) {

                    if ($panchinaro["Calciatore"]["ruolo"] == $titolare["Calciatore"]["ruolo"]
                        && !in_array($panchinaro["Calciatore"]["id"], $entrati)
                        && $panchinaro["Calciatore"]["Prestazione"][0]["voto_calcolato"]) {
                    //allora sostituisci
                        $this->Formazione->Sostituzione->create();

                        $this->Formazione->Sostituzione->set(
                            array(
                            'formazione_id' => $formazione_id,
                            'calciatore_uscito_id' => $titolare["Calciatore"]["id"],
                            'calciatore_entrato_id' => $panchinaro["Calciatore"]["id"],
                            'ordine' => sizeof($entrati)

                        ));

                        debug ("STO PER SALVARE $formazione_id");

                        debug($this->Formazione->data);

                        $this->Formazione->Sostituzione->save();

                        $entrati[] = $panchinaro["Calciatore"]["id"];

                        debug ("Ho sostituito ".$titolare["Calciatore"]["cognome"]." con ".$panchinaro["Calciatore"]["cognome"]);
                       // debug($titolare["Calciatore"]);
                       // debug($panchinaro["Calciatore"]);
                       // debug($entrati);
                        break; //esco, questo titolare è sistemato
                    }

                }

            }


        }



    }

    function crea($formazione_id) {


        if ($this->data) {
        //debug($this->data);

            $this->Formazione->FormazioneCalciatore->deleteAll(array("formazione_id" => $formazione_id), false);

            foreach ($this->data['Formazione']['Calciatore'] as $key => $calciatoreSchierato) {

                $this->Formazione->FormazioneCalciatore->create();

                $this->Formazione->FormazioneCalciatore->set( array(
                    'formazione_id' => $formazione_id,
                    'calciatore_id' => $calciatoreSchierato['calciatore_schierato'],
                    'titolare' => ($key < 11) ? 1:0,
                    'ordine' => $key

                    )
                );

                if ($calciatoreSchierato['calciatore_schierato']) //save solo se non è nullo
                    $this->Formazione->FormazioneCalciatore->save();
            }

        //$this->redirect(array('action' => 'lista'));
        //salvo le associazioni? studiare le eventuali modifiche
        }

        //$formazione = $this->Formazione->findById($formazione_id);
        $formazione = $this->Formazione->read(null, $formazione_id);

        //debug ($formazione);

        $this->set('difensori', $formazione['Formazione']['difensori']);
        $this->set('centrocampisti', $formazione['Formazione']['centrocampisti']);
        $this->set('attaccanti', $formazione['Formazione']['attaccanti']);


        $calciatori_schierati = $this->Formazione->FormazioneCalciatore->findAllByFormazioneId($formazione_id);

        //debug($calciatori_schierati);


        $calciatori_assegnati = array();

        for ($i=0; $i < 24; $i++) {
            $calciatori_assegnati[$i]['cognome'] = '';
            $calciatori_assegnati[$i]['id'] = '';
        }

        $calciatori_liberi = $this->Formazione->Fantasquadra->Fantaacquisto->find('all', array('contain' => 'Calciatore', 'conditions' => array('fantasquadra_id' => $formazione["Fantasquadra"]["id"])) );

        $id_assegnati = array();

        foreach ($calciatori_schierati as $calciatore_schierato) {

            $calciatori_assegnati[$calciatore_schierato['FormazioneCalciatore']['ordine']] = $calciatore_schierato['Calciatore'];
            $id_assegnati[] = $calciatore_schierato['Calciatore']['id'];

        }

        $calciatori_liberi_finali = array();

        foreach ($calciatori_liberi as $calciatore_libero) {
            if (!in_array($calciatore_libero['Calciatore']['id'], $id_assegnati))
                $calciatori_liberi_finali[] = $calciatore_libero;
        }

        //debug($calciatori_assegnati);

        //debug($calciatori_liberi_finali);

        $this->set('formazioni', $this->formazioni);

        $this->set('fantasquadra', $formazione);
        //


        $this->set('calciatori_schierati',
            $calciatori_assegnati);


        $this->set('calciatori_liberi',
            $calciatori_liberi_finali);

        $this->set('calciatori', //disponibili
            $this->Formazione->Fantasquadra->Fantaacquisto->find('all', array('contain' => 'Calciatore', 'conditions' => array('fantasquadra_id' => $formazione["Fantasquadra"]["id"])) ) );


    }

}

